package br.com.maiscontrole.business.impl;

import java.util.ArrayList;
import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.base.business.impl.ServiceImpl;
import br.com.base.business.impl.validatores.StringValidator;
import br.com.base.exception.BaseException;
import br.com.base.model.UsuarioBase;
import br.com.maiscontrole.business.ParceiroService;
import br.com.maiscontrole.exception.NegociosMaisControleException;
import br.com.maiscontrole.exception.error.ErrorMensagemEnum;
import br.com.maiscontrole.model.Parceiro;
import br.com.maiscontrole.repository.DAO.ParceiroDAO;
import br.com.maiscontrole.repository.filter.FiltroParceiro;

/**
 * 
 * @author Milton Domingues
 *
 */
@Service
public class ParceiroServiceImpl extends ServiceImpl<Parceiro, Long, FiltroParceiro, ParceiroDAO> implements ParceiroService {

	@Autowired
	private ParceiroDAO parceiroDAO;

	public ParceiroServiceImpl() {

	}

	@Override
	public ParceiroDAO getRepositorioDAO() {
		return this.parceiroDAO;
	}

	@Override
	public void resolverPerDependencias(Parceiro vo, UsuarioBase usuario) {

	}

	@Override
	public void resolverPosDependencias(Parceiro vo,  UsuarioBase usuario) {

	}

	@Override
	public void resolverPreExcluir(Parceiro vo) {

	}

	@Override
	public void tratarDadosEntidade(Parceiro vo) {

	}

	@Override
	public void validarAlteracao(Parceiro vo) {
		Collection<BaseException> erros = new ArrayList<BaseException>();
		this.validarEntidade(vo, erros);
		if (erros.size() > 0) {
			throw new NegociosMaisControleException(erros);
		}
	}

	private void validarEntidade(Parceiro vo, Collection<BaseException> erros) {
		if (StringValidator.isNull(vo.getNome())) {
			erros.add(new NegociosMaisControleException(ErrorMensagemEnum.ERROR_CAMPO_OBRIGATORIO, "nome"));
		}

	}

	@Override
	public void validarExclusao(Parceiro vo) {

	}

	@Override
	public void validarInclusao(Parceiro vo) {
		Collection<BaseException> erros = new ArrayList<BaseException>();
		this.validarEntidade(vo, erros);
		if (erros.size() > 0) {
			throw new NegociosMaisControleException(erros);
		}
	}

	@Override
	public void validarUnicidade(Parceiro vo) {

	}
}
